﻿import {useBaseApi} from '/@/api/base';

// 号船分析接口服务
export const usePlanSharpApi = () => {
	const baseApi = useBaseApi("planSharp");
	return {
		// 分页查询号船分析
		page: baseApi.page,
		// 查看号船分析详细
		detail: baseApi.detail,
		// 新增号船分析
		add: baseApi.add,
		// 更新号船分析
		update: baseApi.update,
		// 删除号船分析
		delete: baseApi.delete,
		// 批量删除号船分析
		batchDelete: baseApi.batchDelete,
		// 导出号船分析数据
		exportData: baseApi.exportData,
		// 导入号船分析数据
		importData: baseApi.importData,
		// 下载号船分析数据导入模板
		downloadTemplate: baseApi.downloadTemplate,
		// 获取船号详细统计
		getShipDetails: function (params: { ch: string }, cancel: boolean = false) {
			return baseApi.request({
				url: baseApi.baseUrl + 'getShipDetails',
				method: 'get',
				params: params,
			}, cancel);
		},
		// 批量更新所有船号进度
		updateAllProgress: function (cancel: boolean = false) {
			return baseApi.request({
				url: baseApi.baseUrl + 'updateAllProgress',
				method: 'post',
			}, cancel);
		},
	}
}

// 号船分析实体
export interface PlanSharp {
	// 主键Id
	id: number;
	// 船坞
	dock?: string;
	// 批次
	batch?: string;
	// 船级社
	classificationSociety?: string;
	// 船型
	shipType?: string;
	// 船东
	shipOwner?: string;
	// 坞前
	dockBefore?: string;
	// 坞后
	dockAfter?: string;
	// 船号
	ch?: string;
	// 开工
	startSharpTime?: string;
	// 下坞
	offDockTime?: string;
	// 起浮
	floatTime?: string;
	// 分段量
	fdTotal?: number;
	// 本部
	swsInt?: number;
	// 外协
	otherInt: number;
	// 最早计划
	firstPStrTime: string;
	// 最早开工
	firstStrTime: string;
	// 最后结束
	lastEndTime: string;
	// 进度
	jindu: number;
	// 状态
	statusAll: number;
	// 租户Id
	tenantId: number;
	// 软删除
	isDelete: boolean;
	// 创建时间
	createTime: string;
	// 更新时间
	updateTime: string;
	// 创建者Id
	createUserId: number;
	// 创建者姓名
	createUserName: string;
	// 修改者Id
	updateUserId: number;
	// 修改者姓名
	updateUserName: string;
}

// 船号详细统计实体
export interface PlanSharpDetail {
	// 船号
	ch: string;
	// 分类
	typeName: string;
	// 总计
	total: number;
	// 最早开工日期
	earliestStartDate?: string;
	// 最晚完工日期
	latestEndDate?: string;
	// 完工数
	completedCount: number;
	// 进度
	progress: number;
}
